home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / utilde.p < prev    next >
Text File  |  1995-04-22  |  2KB  |  129 lines

  1. PROGRAM UTILDEM(INPUT,OUTPUT);
  2.  
  3. VAR HWRK,KEY:^INTEGER; (* REQ FOR HELP *)
  4.     CNSL:INTEGER;
  5.  
  6. PROCEDURE INITHELP;
  7. BEGIN
  8. #A
  9.   LDA #$00
  10.   STA $2DC  ; PLACE 0 IN REG 732
  11. #
  12. END;
  13.  
  14. (* INITHELP MUST BE CALLED AFTER
  15.    HELP=TRUE TO RESET *)
  16.  
  17. FUNCTION HELP:BOOLEAN;
  18. BEGIN         (* HELP KEY VALUE *)
  19.    HELP:=HWRK^=17;
  20. END;
  21.  
  22. PROCEDURE FLUSHKBD;
  23. BEGIN
  24. #A
  25.   LDA #$FF
  26.   STA $2FC  ; POKE 255 IN 764
  27. #
  28. END;
  29.  
  30. FUNCTION KEYPRESSED:BOOLEAN;
  31. BEGIN
  32.   KEYPRESSED:=KEY^<>255;
  33. END;
  34.  
  35. (* CONSOL DOES NOT NEED INIT.*)
  36.  
  37. FUNCTION CONSOL:INTEGER;_SP),Y
  38.  
  39.  
  40. #
  41. END;
  42.  
  43.  
  44.  
  45. FUNCTION RR2:INTEGER;
  46.  
  47. (* RETURNS AN INTEGER 0-255 *)
  48.  
  49. BEGIN
  50.  RR2:=0;
  51. #A
  52.  LDA $D20A 
  53.  LDY #5
  54.  STA (_SP),Y
  55.  INY
  56.  LDA #0
  57.  STA (_SP),Y
  58.  
  59. #
  60. END;
  61.  
  62.  
  63. FUNCTION RND(MIN,MAX:INTEGER):INTEGER;
  64.  
  65. (* RETURNS AN INTEGER >=MIN AND
  66.   <=MAX  RANGE = MAXINT *)
  67.  
  68. VAR R,R1:REAL;
  69.     R2:INTEGER;
  70. BEGIN
  71.   R:=(RR2 / 256);
  72.   R1:=((MAX-MIN+1)*R);
  73.   R2:=MIN+TRUNC(R1);
  74.   RND:=R2;
  75. END;
  76.  
  77.  
  78.  
  79.  
  80.  
  81. PROCEDURE DELAY;
  82.  VAR V:INTEGER;
  83. BEGIN FOR V:=1 TO 1000 DO (*ZIP*);END;
  84.  
  85. PROCEDURE DORAND;
  86.  VAR MINW,MAXW,I:INTEGER;
  87.  
  88.   WRITE('ENTER MAX VALUE: ');
  89.   READLN(MAXW);
  90.   WRITELN;WRITELN;
  91.   WRITELN('HERE ARE SOME RANDOM NUMBERS:');
  92.   FOR I:=1 TO 20 DO
  93.     WRITE(RND(MINW,MAXW),'  ');
  94.   WRITELN;
  95.   WRITELN;
  96. END;
  97.  
  98. BEGIN
  99.  HWRK:=POINTER(732); (* HELP REG *)
  100.  KEY:=POINTER(764);   (* KEY REG *)
  101.  INITHELP; FLUSHKBD;
  102.  WRITELN(' UTILDEM (c) 1987 S. ARMITAGE');
  103.  WRITELN('NIFTY (?) ROUTINES FOR KYAN PASCAL');
  104.  WRITELN('     KYAN PASCAL & LIB');
  105.  WRITELN(' (c) 1986 KYAN SOFTWARE INC.');
  106.  WRITELN;
  107.  WRITELN('PRESS HELP TO QUIT.');
  108.  WRITELN('PRESS ANY KEY FOR RANDOM INTEGERS.');
  109.  WRITELN('PRESS START,SELECT AND OPTION');
  110.  WRITELN('IN ANY COMBINATION TO TEST.');
  111.  REPEAT
  112.   DELAY;
  113.   CNSL:=CONSOL;
  114.   CASE CNSL OF
  115.    0:WRITELN('START+SELECT+OPTION');
  116.    1:WRITELN('OPTION+SELECT');  
  117.    2:WRITELN('OPTION+START');
  118.    3:WRITELN('OPTION');
  119.    4:WRITELN('SELECT+START');
  120.    5:WRITELN('SELECT');
  121.    6:WRITELN('START');
  122.    7:(* NO CONSOL PRESSED *);
  123.    8:WRITELN(' CONSOL=8, VBLANK STAGE 2')
  124.   END;
  125.   IF KEYPRESSED THEN DORAND;
  126.  UNTIL HELP;
  127.  WRITELN;WRITELN;
  128.  FLUSHKBD; INITHELP; 
  129. END.